/*
类：geojson格式的数据，用于下载保存

属性：
    features：线要素集合
方法：
    getLineString：返回线要素类
        input：坐标序列、属性
        output：线要素实例
    transToGeoJson：将要素集合转为geojson的结构
        input：要素集合
    toString：将对象转为字符串
*/
class LineStringFeatures {
  constructor() {
    this.type = 'FeatureCollection';
  }
  //线要素内部类实例
  getLineString(coords, properties) {
    class LineString {
      constructor(coords, properties) {
        this.type = 'Feature';
        this.properties = properties;
        this.geometry = { type: 'LineString', coordinates: coords };
      }
      setProperties(properties) {
        this.properties = properties;
      }
    }
    return new LineString(coords, properties);
  }
  //将输入数据转为geojson的结构
  transToGeoJson(coordsList, properties = []) {
    this.features = [];
    coordsList.forEach((coords, index) => {
      let line = this.getLineString(coords); //创建线要素
      if (properties.length > index) line.setProperties(properties[index]); //加入属性，如聚类标签
      this.features.push(line);
    });
  }
  //将实例对象转为字符串
  toString() {
    return JSON.stringify(this);
  }
}
export { LineStringFeatures };
